package com.pkche.core.advanced.util.page;

/**
 * 
 * <h6>分页标签处理器</h6>
 *
 * User: Qiang <br/>
 * Describe： 处理分页功能<br/>
 *
 * @date 2015年3月4日 上午11:44:14
 */
public class PageTagHandler {
	// 单个页面长度
	private int singlePageSize = 25;
	// 当前页面列表索引
	private int pageListIndex;

	// 当前页码
	private int pageNumber = 0;

	public PageTagHandler(int p, int pageSize) {
		singlePageSize = pageSize;
		pageNumber = p;
		if (pageNumber < 1) {
			// 如果当前为第一页，设置为0，用以拼接sql
			pageNumber = 0;
		} else {
			// 如果大于第一页，当前页码减1
			pageNumber = pageNumber - 1;
		}

	}

	/**
	 * 生成分页标签
	 * 
	 * @param tagSize
	 *            页面显示的标签个数
	 * @param elementCount
	 *            元素数量
	 * @param queryString
	 *            查询字符串
	 * @return
	 */
	public TagEntry tag(int tagSize, int elementCount, String queryString) {
		// 总页码
		int total_page = (elementCount / singlePageSize);
		if ((elementCount % singlePageSize) > 0) {
			total_page += 1;
		}
		TagEntry e = new TagEntry(pageNumber, total_page, tagSize);
		// 处理查询字符串
		if (queryString != null) {
			queryString += "&";
			int i = queryString.indexOf("p=");// 去除重复页码
			if (i != -1) {
				queryString = queryString.substring(0, i);
			}
		} else {
			queryString = "";
		}
		e.setQueryString(queryString);
		pageListIndex = pageNumber * singlePageSize + 1;
		return e;
	}

	/**
	 * 返回索引值
	 * 
	 * @return
	 */
	public int getPageListIndex() {
		return pageListIndex;
	}

	/**
	 * 返回位置
	 * 
	 * @return
	 */
	public int getIndex() {
		int p = this.pageNumber;
		p = p == 0 ? 1 : p;
		p = p - 1;
		int index = p * singlePageSize;
		if (index == 0) {
			return 1;
		}
		return index;
	}
}
